// noinspection JSUnresolvedReference
/**
* Field Google Map
*/
/* global jQuery, document, redux_change, redux, google */
(function ( $ ) {
'use strict';
redux.field_objects = redux.field_objects || {};
redux.field_objects.google_maps = redux.field_objects.google_maps || {};
/* LIBRARY INIT */
redux.field_objects.google_maps.init = function ( selector ) {
if ( ! selector ) {
selector = $( document ).find( '.redux-group-tab:visible' ).find( '.redux-container-google_maps:visible' );
}
$( selector ).each(
function ( i ) {
let delayRender;
const el = $( this );
let parent = el;
if ( ! el.hasClass( 'redux-field-container' ) ) {
parent = el.parents( '.redux-field-container:first' );
}
if ( parent.is( ':hidden' ) ) {
return;
}
if ( parent.hasClass( 'redux-field-init' ) ) {
parent.removeClass( 'redux-field-init' );
} else {
return;
}
// Check for delay render, which is useful for calling a map
// render after JavaScript load.
delayRender = Boolean( el.find( '.redux_framework_google_maps' ).data( 'delay-render' ) );
// API Key button.
redux.field_objects.google_maps.clickHandler( el );
// Init our maps.
redux.field_objects.google_maps.initMap( el, i, delayRender );
}
);
};
/* INIT MAP FUNCTION */
redux.field_objects.google_maps.initMap = async function ( el, idx, delayRender ) {
let delayed;
let scrollWheel;
let streetView;
let mapType;
let address;
let defLat;
let defLong;
let defaultZoom;
let mapOptions;
let geocoder;
let g_autoComplete;
let g_LatLng;
let g_map;
let noLatLng = false;
// Pull the map class.
const mapClass = el.find( '.redux_framework_google_maps' );
const containerID = mapClass.attr( 'id' );
const autocomplete = containerID + '_autocomplete';
const canvas = containerID + '_map_canvas';
const canvasId = $( '#' + canvas );
const latitude = containerID + '_latitude';
const longitude = containerID + '_longitude';
// Add map index to data attr.
// Why, say we want to use delay_render,
// and want to init the map later on.
// You'd need the index number in the
// event of multiple map instances.
// This allows one to retrieve it
// later.
$( mapClass ).attr( 'data-idx', idx );
if ( true === delayRender ) {
return;
}
// Map has been rendered, no need to process again.
if ( $( '#' + containerID ).hasClass( 'rendered' ) ) {
return;
}
// If a map is set to delay render and has been initiated
// from another scrip, add the 'render' class so rendering
// does not occur.
// It messes things up.
delayed = Boolean( mapClass.data( 'delay-render' ) );
if ( true === delayed ) {
mapClass.addClass( 'rendered' );
}
// Create the autocomplete object, restricting the search
// to geographical location types.
g_autoComplete = await google.maps.importLibrary( 'places' );
g_autoComplete = new google.maps.places.Autocomplete( document.getElementById( autocomplete ), {types: ['geocode']} );
// Data bindings.
scrollWheel = Boolean( mapClass.data( 'scroll-wheel' ) );
streetView = Boolean( mapClass.data( 'street-view' ) );
mapType = Boolean( mapClass.data( 'map-type' ) );
address = mapClass.data( 'address' );
address = decodeURIComponent( address );
address = address.trim();
// Set default Lat/lng.
defLat = canvasId.data( 'default-lat' );
defLong = canvasId.data( 'default-long' );
defaultZoom = canvasId.data( 'default-zoom' );
// Eval whether to set maps based on lat/lng or address.
if ( '' !== address ) {
if ( '' === defLat || '' === defLong ) {
noLatLng = true;
}
} else {
noLatLng = false;
}
// Can't have empty values, or the map API will complain.
// Set default for the middle of the United States.
defLat = defLat ? defLat : 39.11676722061108;
defLong = defLong ? defLong : -100.47761000000003;
if ( noLatLng ) {
// If displaying a map based on an address.
geocoder = new google.maps.Geocoder();
// Set up Geocode and pass address.
geocoder.geocode(
{'address': address},
function ( results, status ) {
let latitude;
let longitude;
// Function results.
if ( status === google.maps.GeocoderStatus.OK ) {
// A good address was passed.
g_LatLng = results[0].geometry.location;
// Set map options.
mapOptions = {
center: g_LatLng,
zoom: defaultZoom,
streetViewControl: streetView,
mapTypeControl: mapType,
scrollwheel: scrollWheel,
mapTypeControlOptions: {
style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR,
position: google.maps.ControlPosition.LEFT_BOTTOM
},
mapId: 'REDUX_GOOGLE_MAPS',
};
// Create map.
g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions );
// Get and set lat/long data.
latitude = el.find( '#' + containerID + '_latitude' );
latitude.val( results[0].geometry.location.lat() );
longitude = el.find( '#' + containerID + '_longitude' );
longitude.val( results[0].geometry.location.lng() );
redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID );
} else {
// No data found, alert the user.
alert( 'Geocode was not successful for the following reason: ' + status );
}
}
);
} else {
// If displaying map based on an lat/lng.
g_LatLng = new google.maps.LatLng( defLat, defLong );
// Set map options.
mapOptions = {
center: g_LatLng,
zoom: defaultZoom, // Start off far unless an item is selected, set by php.
streetViewControl: streetView,
mapTypeControl: mapType,
scrollwheel: scrollWheel,
mapTypeControlOptions: {
style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR,
position: google.maps.ControlPosition.LEFT_BOTTOM
},
mapId: 'REDUX_GOOGLE_MAPS',
};
// Create the map.
g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions );
redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID );
}
};
redux.field_objects.google_maps.renderControls = function ( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ) {
let markerTooltip;
let infoWindow;
let g_marker;
let geoAlert = mapClass.data( 'geo-alert' );
// Get HTML.
const input = document.getElementById( autocomplete );
// Set objects into the map.
g_map.controls[google.maps.ControlPosition.TOP_LEFT].push( input );
// Bind objects to the map.
g_autoComplete = new google.maps.places.Autocomplete( input );
g_autoComplete.bindTo( 'bounds', g_map );
// Get the marker tooltip data.
markerTooltip = mapClass.data( 'marker-tooltip' );
markerTooltip = decodeURIComponent( markerTooltip );
// Create infoWindow.
infoWindow = new google.maps.InfoWindow();
// Create marker.
g_marker = new google.maps.Marker(
{
position: g_LatLng,
map: g_map,
anchorPoint: new google.maps.Point( 0, - 29 ),
draggable: true,
title: markerTooltip,
animation: google.maps.Animation.DROP
}
);
geoAlert = decodeURIComponent( geoAlert );
// Place change.
google.maps.event.addListener(
g_autoComplete,
'place_changed',
function () {
let place;
let address;
let markerTooltip;
infoWindow.close();
// Get place data.
place = g_autoComplete.getPlace();
// Display alert if something went wrong.
if ( ! place.geometry ) {
window.alert( geoAlert );
return;
}
console.log( place.geometry.viewport );
// If the place has a geometry, then present it on a map.
if ( place.geometry.viewport ) {
g_map.fitBounds( place.geometry.viewport );
} else {
g_map.setCenter( place.geometry.location );
g_map.setZoom( 17 ); // Why 17? Because it looks good.
}
markerTooltip = mapClass.data( 'marker-tooltip' );
markerTooltip = decodeURIComponent( markerTooltip );
// Set the marker icon.
g_marker = new google.maps.Marker(
{
position: g_LatLng,
map: g_map,
anchorPoint: new google.maps.Point( 0, - 29 ),
title: markerTooltip,
clickable: true,
draggable: true,
animation: google.maps.Animation.DROP
}
);
// Set marker position and display.
g_marker.setPosition( place.geometry.location );
g_marker.setVisible( true );
// Form array of address components.
address = '';
if ( place.address_components ) {
address = [( place.address_components[0] && place.address_components[0].short_name || '' ),
( place.address_components[1] && place.address_components[1].short_name || '' ),
( place.address_components[2] && place.address_components[2].short_name || '' )].join( ' ' );
}
// Set the default marker info window with address data.
infoWindow.setContent( '
' + place.name + ' ' + address );
infoWindow.open( g_map, g_marker );
// Run Geolocation.
redux.field_objects.google_maps.geoLocate( g_autoComplete );
// Fill in address inputs.
redux.field_objects.google_maps.fillInAddress( el, latitude, longitude, g_autoComplete );
}
);
// Marker drag.
google.maps.event.addListener(
g_marker,
'drag',
function ( event ) {
document.getElementById( latitude ).value = event.latLng.lat();
document.getElementById( longitude ).value = event.latLng.lng();
}
);
// End marker drag.
google.maps.event.addListener(
g_marker,
'dragend',
function () {
redux_change( el.find( '.redux_framework_google_maps' ) );
}
);
// Zoom Changed.
g_map.addListener(
'zoom_changed',
function () {
el.find( '.google_m_zoom_input' ).val( g_map.getZoom() );
}
);
// Marker Info Window.
infoWindow = new google.maps.InfoWindow();
google.maps.event.addListener(
g_marker,
'click',
function () {
const marker_info = containerID + '_marker_info';
const infoValue = document.getElementById( marker_info ).value;
if ( '' !== infoValue ) {
infoWindow.setContent( infoValue );
infoWindow.open( g_map, g_marker );
}
}
);
};
/* FILL IN ADDRESS FUNCTION */
redux.field_objects.google_maps.fillInAddress = function ( el, latitude, longitude, g_autoComplete ) {
// Set variables.
const containerID = el.find( '.redux_framework_google_maps' ).attr( 'id' );
// What if someone only wants city, or state, ect...
// gotta do it this way to check for the address!
// Need to check each of the returned components to see what is returned.
const componentForm = {
street_number: 'short_name',
route: 'long_name',
locality: 'long_name',
administrative_area_level_1: 'short_name',
country: 'long_name',
postal_code: 'short_name'
};
// Get the place details from the autocomplete object.
const place = g_autoComplete.getPlace();
let component;
let i;
let addressType;
let _d_addressType;
let val;
let len;
document.getElementById( latitude ).value = place.geometry.location.lat();
document.getElementById( longitude ).value = place.geometry.location.lng();
for ( component in componentForm ) {
if ( componentForm.hasOwnProperty( component ) ) {
// Push in the dynamic form element ID again.
component = containerID + '_' + component;
// Assign to proper place.
document.getElementById( component ).value = '';
document.getElementById( component ).disabled = false;
}
}
// Get each component of the address from the place details
// and fill the corresponding field on the form.
len = place.address_components.length;
for ( i = 0; i < len; i += 1 ) {
addressType = place.address_components[i].types[0];
if ( componentForm[addressType] ) {
// Push in the dynamic form element ID again.
_d_addressType = containerID + '_' + addressType;
// Get the original.
val = place.address_components[i][componentForm[addressType]];
// Assign to proper place.
document.getElementById( _d_addressType ).value = val;
}
}
};
redux.field_objects.google_maps.geoLocate = function ( g_autoComplete ) {
if ( navigator.geolocation ) {
navigator.geolocation.getCurrentPosition(
function ( position ) {
const geolocation = new google.maps.LatLng( position.coords.latitude, position.coords.longitude );
const circle = new google.maps.Circle(
{
center: geolocation,
radius: position.coords.accuracy
}
);
g_autoComplete.setBounds( circle.getBounds() );
}
);
}
};
/* API BUTTON CLICK HANDLER */
redux.field_objects.google_maps.clickHandler = function ( el ) {
// Find the API Key button and react on click.
el.find( '.google_m_api_key_button' ).on(
'click',
function () {
// Find message wrapper.
const wrapper = el.find( '.google_m_api_key_wrapper' );
if ( wrapper.is( ':visible' ) ) {
// If the wrapper is visible, close it.
wrapper.slideUp(
'fast',
function () {
el.find( '#google_m_api_key_input' ).trigger( 'focus' );
}
);
} else {
// If the wrapper is visible, open it.
wrapper.slideDown(
'medium',
function () {
el.find( '#google_m_api_key_input' ).trigger( 'focus' );
}
);
}
}
);
el.find( '.google_m_autocomplete' ).on(
'keypress',
function ( e ) {
if ( 13 === e.keyCode ) {
e.preventDefault();
}
}
);
// Auto select autocomplete contents,
// since Google doesn't do this inherently.
el.find( '.google_m_autocomplete' ).on(
'click',
function ( e ) {
$( this ).trigger( 'focus' );
$( this ).trigger( 'select' );
e.preventDefault();
}
);
};
} )( jQuery );
Découvrez les Sensations du Casino en Ligne avec Casino Bino Bet : Jouez Maintenant! – Orchid Group Warning: Undefined variable $encoded_url in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54
Deprecated: base64_decode(): Passing null to parameter #1 ($string) of type string is deprecated in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54
Comprendre les Règles des Jeux de Casino en Ligne sur Casino Bino Bet
Pour les amateurs de casino en ligne en France, il est crucial de comprendre les règles des jeux de casino sur Casino Bino Bet. Tout d’abord, familiarisez-vous avec l’interface du casino et découvrez où se trouvent les différents jeux. Ensuite, apprenez les règles de base des jeux de table, tels que le blackjack, la roulette et le baccarat. Il est également important de comprendre les règles des machines à sous en ligne, qui peuvent varier d’un jeu à l’autre. N’oubliez pas de consulter les règles des jeux de vidéo poker et des jeux de spécialité tels que le keno et les cartes à gratter. En comprenant les règles de ces jeux de casino en ligne, vous pouvez améliorer vos chances de gagner et passer un moment agréable sur Casino Bino Bet. Enfin, n’oubliez pas de toujours jouer de manière responsable et de respecter votre budget de jeu.
Les Avantages de Jouer au Casino en Ligne sur Casino Bino Bet
Les amateurs de casino en ligne en France seront heureux d’apprendre les avantages de jouer sur Casino Bino Bet. Tout d’abord, profitez d’une large sélection de jeux de casino en ligne, y compris les machines à sous, le blackjack, la roulette et le vidéo poker. Deuxièmement, jouez depuis le confort de votre domicile, éliminant ainsi le trajet et les dépenses liées aux casinos terrestres. Troisièmement, Casino Bino Bet propose des bonus de bienvenue généreux pour les nouveaux joueurs, ainsi que des promotions régulières pour les joueurs existants. Quatrièmement, bénéficiez d’une sécurité et d’une confidentialité accrues grâce aux dernières technologies de cryptage de données. Cinquièmement, jouez en toute tranquillité d’esprit avec un service clientèle disponible 24h/24 et 7j/7 pour répondre à toutes vos questions. Sixièmement, profitez d’une expérience de jeu fluide et sans interruption grâce à une plateforme de jeu en ligne rapide et fiable. Enfin, découvrez une communauté de joueurs en ligne passionnés et amicaux sur Casino Bino Bet.
Découvrez les Meilleurs Jeux de Casino Disponibles sur Casino Bino Bet
Si vous êtes à la recherche des meilleurs jeux de casino en ligne en France, vous êtes au bon endroit. Casino Bino Bet propose une large sélection de jeux de haute qualité pour satisfaire tous les goûts. Découvrez les machines à sous populaires telles que Starburst, Gonzo’s Quest et Book of Dead. Pour les amateurs de jeux de table, il y a la roulette, le blackjack et le baccarat.
Vous pouvez également essayer le vidéo poker ou les jeux avec croupiers en direct pour une expérience de casino encore plus immersive.
Chez Casino Bino Bet, nous nous engageons à offrir une expérience de jeu sûre, équitable et divertissante.
Alors n’hésitez plus, découvrez dès maintenant les meilleurs jeux de casino disponibles sur Casino Bino Bet et vivez une expérience de jeu inoubliable.
Que vous soyez un joueur débutant ou expérimenté, nous avons quelque chose pour tout le monde.
Rejoignez dès maintenant la communauté de Casino Bino Bet et profitez des meilleurs jeux de casino en ligne en France.
Comment Créer un Compte et Commencer à Jouer sur Casino Bino Bet
Vous souhaitez rejoindre l’univers du Casino Bino Bet en France ? Voici les étapes à suivre :
1. Rendez-vous sur la page d’accueil de Casino Bino Bet.
2. Cliquez sur “S’inscrire” situé en haut à droite de la page.
3. Remplissez le formulaire d’inscription en fournissant les informations requises.
4. Validez votre compte en cliquant sur le lien envoyé par email.
5. Connectez-vous à votre compte en utilisant vos identifiants.
6. Déposez des fonds en sélectionnant une option de paiement fiable.
7. Choisissez un jeu et commencez à jouer !
Les Stratégies Gagnantes pour les Jeux de Casino sur Casino Bino Bet
Découvrez les 7 stratégies gagnantes pour les jeux de casino sur Casino Bino Bet en France. Que vous soyez un fan de blackjack, de roulette, ou de machines à sous, ces conseils vous aideront à maximiser vos gains. Apprenez les règles, gérez votre bankroll, et maîtrisez les stratégies de base pour booster vos chances de gagner. Ne manquez pas nos astuces pour les jeux live, et découvrez les avantages de jouer sur Casino Bino Bet en ligne. Inscrivez-vous dès maintenant et rejoignez les rangs des joueurs gagnants!
Les Mesures de Sécurité et de Confidentialité sur Casino Bino Bet
Sur Casino Bino Bet, la sécurité et la confidentialité sont primordiales. Voici les mesures mises en place pour les protéger : 1. Certificat SSL : Casino Bino Bet utilise un certificat SSL pour garantir la sécurité des données de ses joueurs.
2. Protection des données : Les informations personnelles et financières des joueurs sont stockées sur des serveurs sécurisés.
3. Jeu responsable : Casino Bino Bet promeut le jeu responsable en offrant des outils pour contrôler et limiter les dépenses.
4. Vérification des joueurs : Pour prévenir la fraude, Casino Bino Bet vérifie l’identité de tous les joueurs.
5. Politique de confidentialité : Casino Bino Bet s’engage à ne pas divulguer les informations personnelles des joueurs à des tiers.
6. Pare-feu : Des pare-feu sont utilisés pour protéger les serveurs de Casino Bino Bet contre les intrusions.
7. Générateur de nombres aléatoires : Casino Bino Bet utilise un générateur de nombres aléatoires pour garantir l’équité des jeux.
Vous vous demandez ce qu’est Casino Bino Bet ? Découvrez les sensations du casino en ligne avec Casino Bino Bet et jouez dès maintenant !
Quels sont les avantages de jouer sur Casino Bino Bet ? Découvrez les Sensations du Casino en Ligne avec Casino Bino Bet et expérimentez un gameplay fluide et excitant.
Prêt à plonger dans l’univers du casino BinoBet en ligne ? Découvrez les Sensations du Casino en Ligne avec Casino Bino Bet et commencez à jouer maintenant pour une expérience de jeu inoubliable.